iT邦幫忙

2021 iThome 鐵人賽

DAY 5
1

鏈表算是常出的題型之一吧(?
今天先整理出相對直觀好理解的題目,明天補上比較需要思考的
鏈表也不需要多介紹了,直接上題目整理


例題實戰

206.反轉鏈表
這個應該是講到爛了..但還是寫一下吧

[法一]迭代

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr||head->next==nullptr){
            return head;
        }
        //2->1->3
        //2<-1<-3
        ListNode* f = nullptr, *c = head, *c_next = head->next;
        while(c){
            c_next = c->next;
            c->next = f;
            f = c;
            c = c_next;
        }
        return f;
    }
};

[法二] 遞迴

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* reverseList(ListNode* head) {
        if(head==nullptr||head->next==nullptr){
            return head;
        }
        //2-> 1<-3<-5
        //1<-3<-5<-2
        ListNode* new_head = reverseList(head->next);//返回子鏈的head節點
        head->next->next = head;
        head->next = nullptr;
        return new_head;
    }
};

21.合併有序鏈表
這題在排序的文章中講過了,就不寫了


160.相交鏈表
這題很有趣,從兩端開始走,走到底就到另一端的頭部,最後相遇就是交點!!

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    ListNode *getIntersectionNode(ListNode *headA, ListNode *headB) {
        if(headA==nullptr||headB==nullptr){
            return nullptr;
        }
        ListNode* pA = headA, *pB = headB;
        while(pA!=pB){
            pA = pA==nullptr?headB:pA->next;
            pB = pB==nullptr?headA:pB->next;
        }
        return pA;
    }
};

上一篇
DAY4 - 堆
下一篇
DAY6 - 鏈表(二)
系列文
算法與數據結構&力扣例題實戰22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言